package com.iluwatar.stepbuilder;

import java.util.List;

/**
 * The class with many parameters.
 */
public class Character {

	private String name;
	private String fighterClass;
	private String wizardClass;
	private String weapon;
	private String spell;
	private List<String> abilities;

	public Character(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getFighterClass() {
		return fighterClass;
	}

	public void setFighterClass(String fighterClass) {
		this.fighterClass = fighterClass;
	}

	public String getWizardClass() {
		return wizardClass;
	}

	public void setWizardClass(String wizardClass) {
		this.wizardClass = wizardClass;
	}

	public String getWeapon() {
		return weapon;
	}

	public void setWeapon(String weapon) {
		this.weapon = weapon;
	}

	public String getSpell() {
		return spell;
	}

	public void setSpell(String spell) {
		this.spell = spell;
	}

	public List<String> getAbilities() {
		return abilities;
	}

	public void setAbilities(List<String> abilities) {
		this.abilities = abilities;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder();
		sb.append("This is a ");
		sb.append(fighterClass != null ? fighterClass : wizardClass);
		sb.append(" named ");
		sb.append(name);
		sb.append(" armed with a ");
		sb.append(weapon != null ? weapon : spell != null ? spell : "with nothing");
		sb.append(abilities != null ? (" and wielding " + abilities + " abilities") : "");
		sb.append(".");
		return sb.toString();
	}
}
